1. Field of the Invention
The present invention relates to authentication of programmed micro-code and more particularly to confirm the integrity of programmable micro-code written in a memory device.
2. Description of the Related Arts
Computer systems during initial power up rely on a sequence of instructional routines which build on each previously executed instructional routine until the computer system is initialized. Micro-code, also referred to as firmware or boot code, is the first level of the instructional routines that are executed when the computer system is initially powered up. The micro-code stored in non-volatile memory devices such as a memory IC (integrated circuit) directs the computer system to certain boot blocks located on a disk drive. As these boot blocks on the disk drive are executed, successively larger blocks of boot data are loaded until finally the operating system, such as an Unix or Microsoft Windows of the computer system is loaded.
The micro-code for the initial boot up instructions of a computer system is typically stored in a boot ROM (read only memory) or boot PROM (programmable read only memory). An example of a PROM is a flash PROM, often referred to as flash memory. Needs arise when the micro-code for the initial boot up instructions requires updating. Those computer systems having ROMs require new ROMs. Replacing old ROMs with newly supplied ROMs is expensive. Furthermore, the computer system has to be disassembled to gain access to replace the ROMs.
In computer systems with boot PROMs that employ flash technology, updating new micro-code entails accessing the flash PROM using software and programming the flash PROM with new micro-code. However, because the micro-code contained in the boot PROM is the first code that is executed, reasons to limit programming access to the flash PROM include: 1) inadvertent programming can cause the computer system become completely inactive; 2) security sensitive environments require that the micro-code be tamper-proof to prevent security risks. Thus, safeguards are currently in place to prevent modification of the boot PROM.
These safeguards include using boot ROMs to store the micro-code or setting hardwire jumpers that prevent software modification of boot PROMs. In order to modify the micro-code, boot ROMs must be replaced with new boot ROMs containing the updated micro-code. In the case of boot PROMs, user intervention is required to manually switch the jumpers of the boot PROMs to enable programming access to the boot PROMs for the new micro-code. In either case, user intervention is required to physically open the computer system and make the necessary changes. The changes range from the replacement of old boot ROMs with new boot ROMs to changing jumper settings of the flash boot PROM to enable and disable programming of the flash boot PROM. Thus, the safeguards require additional time and effort from the users to implement modifications to the micro-code. The process of providing upgrades to the micro-code programming is cumbersome and time-consuming.
Therefore, it is desirable to provide an apparatus for authenticating firmware programmed in a boot PROM and methods of operating the same that enable programming access to the boot PROM without compromising the authenticity of the firmware that overcome the disadvantages of disassembling the computer system.